#include "canbus/message.h"

/**
 * @namespace canbus
 * @brief canbus
 */
namespace canbus {

/**
 * @class CanMsgEncoderRRReq
 * @brief Concrete can message that stores Rear Right encoder request information
 */
class CanMsgEncoderRRReq: public CanMsg {
public:
  CanMsgEncoderRRReq():
  CanMsg() {
    SetByte(0x01, 0);
    SetByte(0x00, 1);
    SetByte(0x11, 2);
    SetByte(0x05, 3);
    SetByte(0x01, 4);
    SetByte(0x01, 5);
    SetByte(0x01, 6);
    SetByte(0x01, 7);    
  }
  CanMsgEncoderRRReq(uint8_t* value): 
  CanMsg(value) {
    SetByte(0x01, 0);
    SetByte(0x00, 1);
    SetByte(0x11, 2);
    SetByte(0x05, 3);
    SetByte(0x01, 4);
    SetByte(0x01, 5);
    SetByte(0x01, 6);
    SetByte(0x01, 7);
  }

  virtual ~CanMsgEncoderRRReq() = default;

  void UpUpdateData() {};
  template <typename T>
  void DownUpdate(const T& input_data) {}

  static const int32_t ID;
  static const std::string NAME;

  friend class CanbusHandler;
};

}